﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Migrator.Util;
using Migrator.Packets;
using Migrator.Entities;

namespace Migrator.Services.RouteOptimization.Packets
{
    /// <summary>
    /// MobileIP route optimization binding acknowledgement packet
    /// 
    /// Packet structure:
    /// 
    /// 0                   1                   2                   3
    /// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    /// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    /// |     Type      |A|I|M|G|  Rsv  |            Lifetime           |
    /// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    /// |                    Mobile Node Home Address                   |
    /// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    /// |                        Care-of Address                        |
    /// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    /// |                         Identification                        |
    /// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    /// | Extensions ...
    /// +-+-+-+-+-+-+-+-
    ///
    ///</summary>
    public class BindingAcknowledgementPacket : UDPPacket
    {
        public BindingAcknowledgementPacket(Node source, IPAddress destinationIP)
            : base(source, destinationIP, 433, 434)
        {
        }

        public int Type
        {
            get { return 19; }
        }

        public IPAddress HomeAddress
        {
            get;
            set;
        }
    }
}
